package noth.li.sgs.hero.shu;

import noth.li.sgs.card.HolderCard;
import noth.li.sgs.exception.BaseException;
import noth.li.sgs.hero.BaseHero;
import noth.li.sgs.utils.CommonUtil;

import java.util.Iterator;

/**
 * 蜀国武将-刘备
 */
public class LiuBei extends BaseHero {

    private int renDeCardCount; //仁德交予手牌数的统计

    public LiuBei() {
        super("刘备",4 , 4, "蜀", "男");
    }

    public int getRenDeCardCount() {
        return renDeCardCount;
    }

    public void setRenDeCardCount(int renDeCardCount) {
        this.renDeCardCount = renDeCardCount;
    }



    /**
     * 武将技能-仁德
     * 出牌阶段，你可以将任意张手牌交给其他角色，然后若你于此阶段内以此法给出的牌首次达到两张或更多，你回复1点体力。
     * @param index 玩家选择的手牌
     * @param other 其他武将角色
     */
    public void rende(int[] index, BaseHero other) throws BaseException{
        if(CommonUtil.isEmpty(this.holdCards))//判断手牌数是否大于0
            throw new BaseException("您的手牌数不足!");
        if(CommonUtil.isEmpty(index))//判断选择的手牌是否大于0
            throw new BaseException("请选择大于1张的手牌!");
        if(other==null)
            throw new BaseException("请选择一名其他角色");


        for(int nd : index){
            //先给牌
            other.acceptCards(this.holdCards.get(nd));
        }
        //移除几次，就要把下标向前移动一个
        int cardCount = 0;
        for(int nd : index){
            //删除刘备的手牌
            this.holdCards.remove(nd-cardCount++);
        }


        //将选中的手牌交于其他角色
        System.out.println("刘备发动了仁德技能,将"+index.length+"张牌交给了"+other.getName());


        this.renDeCardCount+=index.length;

        //如果给他人的手牌数大于2,则回复一点体力
        if(this.renDeCardCount>=2 && this.life<this.maxLife){
            this.life++;
            System.out.println("刘备回复了1点体力,当前体力值为"+this.life);
        }
    }
}
